package com.jnr.huatu.activity;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.highlight.Highlight;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.jnr.huatu.R;

import java.util.ArrayList;

/**
 * 柱状图
 * @author：景辉
 * created at 2017/2/13 0013 下午 6:03
 */
public class BarChartActivity extends AppCompatActivity {
    private BarChart mBarChart;
    private BarData mBarData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bar_chart);

        mBarChart = (BarChart) findViewById(R.id.bar_chart);
        mBarData = getBarData(10, 100);
        showBarChart(mBarChart, mBarData);
        mBarChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry entry, int i, Highlight highlight) {
                //第一次点击执行的方法在这个方法内我们不做处理
            }

            @Override
            public void onNothingSelected() {
                //第二次点击统计图或者其他位置，统计图的状态恢复就会执行该方法，也就是我们想要的点击事件
//                Intent intent = new Intent(activity, SocDetailActivity.class);
//                intent.putExtra("loginID", loginID);
//                intent.putExtra("password", password);
//                intent.putExtra("deviceType", deviceType);
//                intent.putExtra("number", number);
//                startActivityForResult(intent, 1);
            }
        });
    }

    private void showBarChart(BarChart barChart, BarData barData) {
        barChart.setDrawBorders(false);  ////是否在柱形图上添加边框
        barChart.setDescription("测试");// 数据描述
        // 如果没有数据的时候，会显示这个，类似ListView的EmptyView
        barChart.setNoDataTextDescription("暂时没有数据");
        barChart.setDrawGridBackground(false); // 是否显示表格颜色
        barChart.setGridBackgroundColor(Color.WHITE & 0x70FFFFFF); // 表格的的颜色，在这里是是给颜色设置一个透明度
        barChart.getAxisRight().setEnabled(false);//右边Y轴不显示
        barChart.setTouchEnabled(true); // 设置是否可以触摸
//        barChart.setDragEnabled(true);// 是否可以拖拽
//        barChart.setScaleEnabled(true);// 是否可以缩放
        barChart.setScaleXEnabled(true);//禁止缩放在Y轴上
//        barChart.setPinchZoom(false);//如果设置为true，捏缩放功能。 如果false，x轴和y轴可分别放大
//      barChart.setBackgroundColor();// 设置背景
        barChart.setDrawBarShadow(true);//柱状图没有数据的部分是否显示阴影效果
        barChart.setData(barData); // 设置数据
        barChart.animateY(3000);//Y轴动画效果
        Legend mLegend = barChart.getLegend(); // 设置比例图标示
        mLegend.setForm(Legend.LegendForm.CIRCLE);// 样式
        mLegend.setFormSize(15f);// 字体
        mLegend.setTextColor(Color.BLACK);// 颜色

        //设置多个颜色
        BarDataSet set1 = barChart.getData().getDataSetByIndex(0);
        set1.setColors(ColorTemplate.VORDIPLOM_COLORS);

        //X轴设定
        XAxis xAxis = barChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

        barChart.animateX(1000); // 立即执行的动画,x轴
    }

    /**
     * count表示x轴
     * range表示y轴
     * @author：景辉
     * created at 2017/2/13 0013 下午 2:50
     */
    private BarData getBarData(int count, float range) {
        //设置x轴信息
        ArrayList<String> xValues = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            xValues.add("第" + (i + 1) + "季度");
        }
        //设置y轴信息
        ArrayList<BarEntry> yValues = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            float value = (float) (Math.random() * range/*100以内的随机数*/) + 3;
            yValues.add(new BarEntry(value, i));
        }

        // y轴的数据集合
        BarDataSet barDataSet = new BarDataSet(yValues, "测试柱形图");
        barDataSet.setColor(Color.rgb(114, 188, 223));
        barDataSet.setValueTextSize(10f);

        ArrayList<BarDataSet> barDataSets = new ArrayList<>();
        barDataSets.add(barDataSet); // add the datasets
        BarData barData = new BarData(xValues, barDataSets);
        return barData;
    }
}
